/*
 * 描          述:  <描述>
 * 修  改   人:  Administrator
 * 修改时间:  2016年10月20日
 * <修改描述:>
 */
package com.tx.core.ddlutil.model;

import com.tx.core.util.ObjectUtils;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * 表定义<br/>
 * <功能详细描述>
 * 
 * @author  Administrator
 * @version  [版本号, 2016年10月20日]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public class JPAEntityTableDef implements Serializable, TableDef {
    
    /** 注释内容 */
    private static final long serialVersionUID = 829927103002085200L;

    /** 模式 */
    private String schema;

    /** 目录 */
    private String catalog;
    
    /** 表名 */
    private String name = null;
    
    /** 表内容备注 */
    private String comment = "";

    /** 表主键 */
    private String primaryKey;

    
    /** 表字段. */
    private List<? extends TableColumnDef> columns = new ArrayList<>();
    
    /** 索引集合. */
    private List<? extends TableIndexDef> indexes = new ArrayList<>();

    @Override
    public String getSchema() {
        return schema;
    }

    public void setSchema(String schema) {
        this.schema = schema;
    }

    @Override
    public String getCatalog() {
        return catalog;
    }

    public void setCatalog(String catalog) {
        this.catalog = catalog;
    }

    @Override
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }

    @Override
    public List<? extends TableColumnDef> getColumns() {
        return columns;
    }

    public void setColumns(List<? extends TableColumnDef> columns) {
        this.columns = columns;
    }

    @Override
    public List<? extends TableIndexDef> getIndexes() {
        return indexes;
    }

    public void setIndexes(List<? extends TableIndexDef> indexes) {
        this.indexes = indexes;
    }

    @Override
    public String getPrimaryKey() {
        return primaryKey;
    }

    public void setPrimaryKey(String primaryKey) {
        this.primaryKey = primaryKey;
    }

    /**
     * @return
     */
    @Override
    public int hashCode() {
        int hashCode = ObjectUtils.generateHashCode(super.hashCode(),
                this,
                "name");
        return hashCode;
    }
    
    /**
     * @param obj
     * @return
     */
    @Override
    public boolean equals(Object obj) {
        boolean flag = ObjectUtils.equals(this, obj, "name");
        return flag;
    }
}
